import dbConnect from 'configs/dbConnect' import withSession from 'hocs/withSession' import NoteList from 'apps/Notes/models/NoteList' import Note from 'apps/Notes/models/Note' export default withSession(async (req, res) => { const conn = await dbConnect() const { id: _id } = req.query switch (req.method) { case 'GET': try { const user = req.session.get('user') if (!user || !user?.isVerified || !_id) { throw new Error('Something went wrong') } const note = await Note.getNote(_id) if (!note) { throw new Error('Something went wrong') } res.status(200).json(note) } catch (error) { res.status(400).json({ error: true }) } break case 'DELETE': try { const session = await conn.startSession() const user = req.session.get('user') if (!user || !user?.isVerified || !_id) { throw new Error('Something went wrong') } const noteId = await NoteList.getNoteId(user.noteList, _id) if (!noteId) throw new Error('Something went wrong') await session.withTransaction(async () => { await Note.findByIdAndDelete(noteId) const { notes } = await NoteList.removeNote(user.noteList, _id) session.endSession() res.status(200).json(notes) }) } catch (error) { res.status(400).json([]) } break case 'PUT': try { const session = await conn.startSession() const user = req.session.get('user') const { title, noteId, content } = JSON.parse(req.body) if (!user || !user?.isVerified || !_id || !content) { throw new Error('Something went wrong') } await session.withTransaction(async () => { await Note.updateNote(noteId, content) const { notes } = await NoteList.updateList(user.noteList, noteId, title) session.endSession() res.status(200).json(notes) }) } catch (error) { res.status(400).json([]) } break } })